<?php

/**
 * Controlardor de gestión de usuarios
 *
 */
class controlador_usuarios {

    /**
     * Método para listar usuarios
     */
    public function listado_usuarios() {
        $obj_usuarios = new Usuario();
        $params_usuario = $obj_usuarios->obtener_todos_usuarios();
        require 'app/views/listado_usuarios.php';
    }

    /**
     * Método para ver los datos del usuario
     */
    public function ver_usuario() {
        $obj_usuario = new Usuario();
        if (!$params_usuario = $obj_usuario->get($_GET['id'])) {
            header('location:../home');
        }

        $obj_pronosticos = new Pronostico();
        $params_pronosticos = $obj_pronosticos->get_pronosticos_by_usuario($_GET['id']);

        $params2 = array();

        foreach ($params_pronosticos as $param) {
            $obj_partido_pronostico = new Partido();
            $params_partido_pronostico = $obj_partido_pronostico->obtener_datos_partido($param['partido']);

            $params2[] = array(
                'id' => $param['id'],
                'usuario' => $param['usuario'],
                'partido' => $param['partido'],
                'partidos' => $params_partido_pronostico,
                'goles_local' => $param['goles_local'],
                'goles_visitante' => $param['goles_visitante'],
                'acertada' => $param['acertada'],
                'ganancia' => $param['ganancia'],
                'fecha' => $param['fecha']
            );
        }

        require 'app/views/ver_usuario.php';
    }

    /**
     * Formulario de registro y regitrar al usuario en bd
     */
    public function registrar() {
        if ($_SERVER['REQUEST_METHOD'] == 'POST') {
            $obj_usuario = new Usuario();

            //Limpiamos los campos y los guardamos en variables
            $Email = test_input($_POST['email']);
            $Nombre_usuario = test_input($_POST['usuario']);
            $Clave = test_input($_POST['password']);
            $Nombre = test_input($_POST['nombre']);
            $fecha_nac = $_POST['fecha_nac'];
            $direccion = test_input($_POST['direccion']);
            $poblacion = test_input($_POST['poblacion']);
            $provincia = test_input($_POST['provincia']);
            $cp = test_input($_POST['cp']);
            $telefono = test_input($_POST['telefono']);
            $facebook = test_input($_POST['facebook']);
            $twitter = test_input($_POST['twitter']);
            $googleplus = test_input($_POST['googleplus']);
            $Codigo_activacion = md5(time() . rand(1, 100));
            if (isset($_POST['activado'])) {
                $activado = 1;
            } else {
                $activado = 0;
            }
            if (isset($_POST['bloqueado'])) {
                $bloqueado = 1;
            } else {
                $bloqueado = 0;
            }



            //Comprobamos que se han introducido todos los datos obligatorios
            if ($obj_usuario->existe_usuario_email($Email)) {
                header('location:registrar/error:2');
                die();
            } else if ($obj_usuario->existe_nombre_usuario($Nombre_usuario)) {
                header('location:registrar/error:3');
                die();
            } else {
                $array_datos = array(
                    "email" => $Email,
                    "usuario" => $Nombre_usuario,
                    "password" => $Clave,
                    "nombre" => $Nombre,
                    "fecha_nac" => $fecha_nac,
                    "direccion" => $direccion,
                    "poblacion" => $poblacion,
                    "provincia" => $provincia,
                    "cp" => $cp,
                    "telefono" => $telefono,
                    "facebook" => $facebook,
                    "twitter" => $twitter,
                    "googleplus" => $googleplus,
                    "codigo_activacion" => $Codigo_activacion,
                    "activado" => $activado,
                    "bloqueado" => $bloqueado
                );

                $obj_usuario->set($array_datos);
                //send_mail_registro($Email, $Codigo_activacion);
                $ultimo_id = $obj_usuario->get_last_id();
                $_SESSION['adminbetporra_msj'] = "<strong>¡Usuario registrado correctamente!</strong> email enviado a <b>$Email</b> para que valide su cuenta.";
                header("location:ver_usuario/$ultimo_id");
            }
        } else {
            require 'app/views/registro_usuario.php';
        }
    }

    /**
     * Formulario para editar usuario
     */
    public function editar() {
        if ($_SERVER['REQUEST_METHOD'] == 'POST') {
            $obj_usuario = new Usuario();

            //Limpiamos los campos y los guardamos en variables
            $Email = test_input($_POST['email']);
            $Nombre_usuario = test_input($_POST['usuario']);
            $Nombre = test_input($_POST['nombre']);
            $fecha_nac = $_POST['fecha_nac'];
            $direccion = test_input($_POST['direccion']);
            $poblacion = test_input($_POST['poblacion']);
            $provincia = test_input($_POST['provincia']);
            $cp = test_input($_POST['cp']);
            $telefono = test_input($_POST['telefono']);
            $facebook = test_input($_POST['facebook']);
            $twitter = test_input($_POST['twitter']);
            $googleplus = test_input($_POST['googleplus']);
            if (isset($_POST['activado'])) {
                $activado = 1;
            } else {
                $activado = 0;
            }
            if (isset($_POST['bloqueado'])) {
                $bloqueado = 1;
            } else {
                $bloqueado = 0;
            }
            $id = $_GET['id'];

            $array_datos = array(
                "id" => $id,
                "email" => $Email,
                "usuario" => $Nombre_usuario,
                "nombre" => $Nombre,
                "fecha_nac" => $fecha_nac,
                "direccion" => $direccion,
                "poblacion" => $poblacion,
                "provincia" => $provincia,
                "cp" => $cp,
                "telefono" => $telefono,
                "facebook" => $facebook,
                "twitter" => $twitter,
                "googleplus" => $googleplus,
                "activado" => $activado,
                "bloqueado" => $bloqueado
            );

            $obj_usuario->edit($array_datos);
            $_SESSION['adminbetporra_msj'] = '<strong>¡Usuario modificado correctamente!</strong>';
            header("location:../ver_usuario/$id");
        } else {
            $obj_usuario = new Usuario();
            $params_usuario = $obj_usuario->get($_GET['id']);
            require 'app/views/modificar_usuario.php';
        }
    }

    /**
     * Función que comprueba si existe un usuario con el email que recibo por post desde ajax
     * @return devuelve con echo si existe o no el un usuario
     */
    public function comprobacion_email_existente() {
        $valid = true;
        if (!empty($_POST['email'])) {
            $obj_usuario = new Usuario();

            if ($obj_usuario->existe_usuario_email($_POST['email'])) {
                $valid = false;
            } else {
                $valid = true;
            }
        }
        echo json_encode(array(
            'valid' => $valid,
        ));
    }

    /**
     * Función que comprueba si existe un usuario con el nombre de usuario que recibo por post desde ajax
     * @return devuelve con echo si existe o no el un usuario
     */
    public function comprobacion_nombre_usuario_existente() {
        $valid = true;
        if (!empty($_POST['usuario'])) {
            $obj_usuario = new Usuario();
            if ($obj_usuario->existe_nombre_usuario($_POST['usuario'])) {
                $valid = false;
            } else {
                $valid = true;
            }
        }
        echo json_encode(array(
            'valid' => $valid,
        ));
    }

    public function modificar_imagen() {

        if ($_SERVER['REQUEST_METHOD'] == 'POST') {
            $obj_usuario = new Usuario();

            $error = false;

            // MIME types permitidos
            $mime = array('image/jpg', 'image/jpeg', 'image/gif', 'image/png');
            // Buscamos si el archivo que subimos tiene el MIME type que permitimos en nuestra subida
            if (!in_array($_FILES['archivo']['type'], $mime)) {
                $error = true;
            }
            // Le decimos al usuario que se olvido de subir un archivo
            if ($_FILES['archivo']['type'] == '') {
                $error = true;
            }
            // Indicamos hasta que peso de archivo puede subir el usuario.
            if ($_FILES['archivo']['size'] > '2097152') {
                $error = true;
            }

            //Limpiamos los campos y los guardamos en variables
            $archivo = $_FILES["archivo"]["name"];

            //Comprobamos que se han introducido todos los datos obligatorios
            if (!(empty($archivo)) && (!$error)) {
                $i = 1;
                while (file_exists("web/images/users/$archivo")) {
                    $archivo = "($i)" . $_FILES["archivo"]["name"];
                    $i++;
                }


                $imagen = $archivo;
                $id = $_SESSION['betporra_id'];


                $obj_usuario->modificar_imagen($id, $imagen);

                move_uploaded_file($_FILES["archivo"]["tmp_name"], "web/images/users/$archivo");
                $_SESSION['betporra_msj'] = '<strong>¡Datos Guardados!</strong> ¡Tú avatar ha sido actualizada.!';
                header("location:perfil");
            } else {
                $_SESSION['betporra_msj'] = '<strong>¡Uuups! El avatar introducido no es correcta</strong>, intentalo de nuevo, por favor.';
                header("location:perfil");
            }
        } else {
            header("location:perfil");
        }
    }

    /**
     * Método para desactivar un usuario
     */
    public function desbloquear() {
        $obj_usuario = new Usuario();
        if (!$obj_usuario->desbloquear_usuario($_GET['id'])) {
            header("location:../usuarios");
        }
        $_SESSION['adminbetporra_msj'] = 'Usuario desbloqueado correctamente.';
        header("location:../usuarios");
    }

    /**
     * Método para activar un usuario
     */
    public function bloquear() {
        $obj_usuario = new Usuario();
        if (!$obj_usuario->bloquear_usuario($_GET['id'])) {
            header("location:../usuarios");
        }
        $_SESSION['adminbetporra_msj'] = 'Usuario bloqueado correctamente.';
        header("location:../usuarios");
    }
    
    /**
     * Recargar puntos usuarios
     */
    public function recargar_puntos(){
        $obj_usuario = new Usuario();
        $obj_usuario->recargar_puntos(20);
        
        $_SESSION['adminbetporra_msj'] = 'Puntos recargados correctamente.';
        header("location:usuarios");
    }
}

?>